package chapter05_array;

/**
 * ClassName: TwoArrayTest
 * Package: chapter05_array
 * Description:
 *
 * @Author 安思宇
 * @Create 2025/2/6 16:15
 */
public class TwoArrayTest {
    public static void main(String[] args) {
        //     1.数组的声明与初始化：
        int[] arr1=new int[]{1,2,3};
//        方式一：静态初始化
        int[][] arr2=new int[][]{{1,2,3},{11,22},{111,222,333}};
//        方式二：动态初始化(1)
        String[][] str1=new String[3][2];
        str1[2][1]="ansiyu";
//              动态初始化(2)
        double[][] dou1=new double[4][];
        dou1[1]=new double[2];
//        其他正确写法：
        int arr3[][]=new int[][]{{1,2,3},{11,22},{111,222,333}};
        int[] arr4[]=new int[][]{{1,2,3},{11,22},{111,222,333}};
        int[] arr5[]={{1,2,3},{11,22},{111,222,333}};//类型推断
        //     2.数组元素的调用：
//        内层元素的调用：
        System.out.println(arr3[1][1]);//22
//        外层元素的调用：
//        System.out.println(arr3[1]);//会输出一个地址值
        //     3.数组的长度：
        System.out.println(arr3.length);//3,表示外层元素的个数
        System.out.println(arr3[1].length);//2,表示某个内层元素的个数
        //     4.如何遍历数组：
        for (int i = 0; i < arr3.length; i++) {
            for (int j = 0; j < arr3[i].length; j++) {
                System.out.print(arr3[i][j]+",");
            }
            System.out.println();
        }
        //5.二维数组元素的默认初始化：
        int[][] i1=new int[2][];
        int[][] i2=new int[2][2];
        double[][] d1=new double[2][];
        double[][] d2=new double[2][2];
        String[][] s1=new String[2][];
        String[][] s2=new String[2][2];
        boolean[][] b1=new boolean[2][];
        boolean[][] b2=new boolean[2][2];
//外层元素默认值(方式1)
        System.out.println(i1[0]);//null,因为数组是引用数据类型，i1[0]中存放的是所包含的一维数组的地址值，若未赋值则返回null
        System.out.println(b1[0]);//布尔类型同样返回null
//内层元素默认值(方式1)
//        System.out.println(i1[0][1]);//会报空指针的异常信息
//外层元素默认值(方式2)
        System.out.println(i2[0]);//[I@4dd8dc3,输出虚拟地址值
//内层元素默认值(方式2)
        System.out.println(i2[0][1]);//0,与一维数组的默认值相同


    }
}
